'''
特殊方法和特殊属性
特殊属性:__dict__  获得类对象或实例对象所绑定的所有属性和方法的字典
特殊方法:__len__() 通过重写__len__()方法，让内置函数len()的参数可以是自定义类型
       __add__() 通过重写__add__(),可使用自定义对象具有“+”功能
       __new__() 用于创建对象
       __init__() 对创建的对象进行初始化
'''

print(dir(object))
class A:
  pass
class B:
    pass
class C(A,B):
     def __init__(self,name):
            self.name=name
#创建C类的对象
x=C('Jack')   #x是C类型的一个实例对象
print(x.__dict__)  #这里去运行，你会发现它的运行结果是{'name':'Jack'} 说明它绑定了一个name属性，值是Jack；看到的是实例对象的属性字典
#当然这里还可以在16行代码处添加属性，对应的在19行时也要添加值
print(C.__dict__)  #如果是类对象，会看到它的属性以及方法的一个字典；如果是实例对象看到的是一个属性的字典
print('-----------------------------')
print(x.__class__)     #<class '__main__.C'>输出了对象所属的类
print(C.__bases__)  #输出的是你这个C类的父类的元组
print(C.__base__)      #输出离他最近的父类
print(C.__mro__)   #查看类的层次结构
print(A.__subclasses__())  #查看子类的一个列表